# 打印小猫爱吃鱼，小猫要喝水
# 定义猫类
class Cat():
    # 定义方法
    def method1(self,eat):
        print(f"小猫爱吃{eat}")
    def method2(self,eat):
        print((f"小猫要喝{eat}"))

cat = Cat()
cat.method1("鱼")
cat.method2("水")





# 小明爱跑步，爱吃东西。
'''
1）小明体重75.0公斤
2）每次跑步会减肥0.5公斤
3）每次吃东西体重会增加1公斤
4）小美的体重是45.0公斤
'''
# 定义人类
class People():
    def __init__(self,name,weight):
        # 名字
        self.name = name
        # 体重
        self.weight = weight

    # 定义方法
    # 跑步
    def Run(self):
        self.weight -= 0.5
    # 吃东西
    def Eat(self):
        self.weight += 1

    def __str__(self):
        return f"我的名字是{self.name},体重是{self.weight}"

people = People(name="小明",weight=65)
people.Run()
print(people)



# 摆放家具
'''
需求：
    1）.房子有户型，总面积和家具名称列表
       新房子没有任何的家具
    2）.家具有名字和占地面积，其中
       床：占4平米
       衣柜：占2平面
       餐桌：占1.5平米
    3）.将以上三件家具添加到房子中
    4）.打印房子时，要求输出:户型，总面积，剩余面积，家具名称列表
'''

# 定义家具类
class Furniture():
    def __init__(self,furniture_name,furniture_area):
        # 名字
        self.furniture_name = furniture_name
        # 占地面积
        self.furniture_area = furniture_area

# 定义房子类
class House():
    def __init__(self,house_type,house_area,):
        # 户型
        self.house_type = house_type
        # 总面积
        self.house_area = house_area
        # 剩余面积
        self.surplus_area = self.house_area
        # 家具
        self.furniture = []

    # 摆放家具
    def get_method(self):
        if fu.furniture_area <= self.surplus_area:
            self.furniture.append(fu.furniture_name)
            self.surplus_area -= fu.furniture_area
        else:
            print(f"家具{fu.furniture_name},面积{fu.furniture_area},房子剩余面积{self.surplus_area},超出房子剩余面积")

    def __str__(self):
        return f"房子户型{self.house_type},总面积{self.house_area},剩余面积{self.surplus_area},摆放家具{self.furniture}"

fu = Furniture("床",300)
house = House("两室一厅",500)
house.get_method()
print(house)



# 士兵开枪
'''
1）.士兵瑞恩有一把AK47
2）.士兵可以开火(士兵开火扣动的是扳机)
3）.枪 能够 发射子弹(把子弹发射出去)
4）.枪 能够 装填子弹 --增加子弹的数量
'''
# 枪类
class Gun():
#   属性：
    def __init__(self,gun_name):
#       枪名
        self.gun_name = gun_name
#       子弹数量
        self.bullet = 0
    # 方法：
    # 子弹数量增加
    def increase_bullet(self,quantity):
        self.bullet+=quantity
    # 子弹数量减少
    def reduce_bullet(self,quantity):
        if quantity >= self.bullet:                      # 判断开枪次数是否大于子弹数量
            for i in range(self.bullet):                 # 定义循环变量
                print("piu",end=" ")
            print()
            self.bullet-=self.bullet
            print("没有子弹了，请装子弹")

        else:
            for i in range(quantity):                   # 定义循环变量
                print("piu",end=" ")
            print()
            self.bullet-=quantity

# 士兵类
class Soldiers():
#   属性：
    def __init__(self,soldiers_name ):
#       名字
        self.soldiers_name = soldiers_name
#   方法：
#       装子弹
    def fill_bullet(self,pretend,quantity):
        if pretend == "装子弹":
            gun.increase_bullet(quantity)
#       开火
    def firestarter(self,instructions,frequency):
        if instructions == "开火":
            gun.reduce_bullet(frequency)

    def __str__(self):
        return f"士兵{self.soldiers_name}，使用{gun.gun_name}开火，子弹剩余{gun.bullet},"

gun = Gun("AK47")
soldiers = Soldiers("瑞恩")
soldiers.fill_bullet(pretend="装子弹",quantity=120)
soldiers.firestarter(instructions="开火",frequency=13)

print(soldiers)


